Skip to content

Method: static {...}

1: package auftraege.factory;
2:
3: import auftraege.auftragsBildungsParameter.BlattAnzahlSpanne;
4: import util.RegexConstants;
5:
6: import java.util.regex.Matcher;
7:
8: /**
9: *
10: * Hier werden die {@link DirectProduktionsauftragsParameterFactory} und die {@link DirectVoraussichtlicheDokumentenklassenVariablenFactory} genutzt
11: * um eine {@link BlattanzahlSpanneFactory} zu erstellen.
12: *
13: */
14: public enum BlattanzahlSpanneFactory
15:                 implements DirectProduktionsauftragsParameterFactory<BlattAnzahlSpanne>, DirectVoraussichtlicheDokumentenklassenVariablenFactory<BlattAnzahlSpanne> {
16:         INSTANCE;
17:
18:         //TODO Art: Feature request; Tim: hier meckert Checkstyle wegen des returncounts. Jedoch würde ich sagen, dass das hier völlig legitime 5 Returns sind. Oder?!
19:         @Override
20:         public BlattAnzahlSpanne parse(final String wert) {
21:                 final Matcher zwischenZweiZahlenMatcher = RegexConstants.ZWISCHEN_ZWEI_ZAHLEN.matcher(wert);
22:                 final Matcher vergleichsoperatorMitZahlMatcher = RegexConstants.VERGLEICHS_OPERATOR_MIT_ZAHL.matcher(wert);
23:                 final Matcher nurZahlMatcher = RegexConstants.ZAHL.matcher(wert);
24:
25:                 if (vergleichsoperatorMitZahlMatcher.find()) {
26:                         switch (vergleichsoperatorMitZahlMatcher.group(1)) {
27:                                 case "<":
28:                                         return new BlattAnzahlSpanne(0, Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)));
29:                                 case ">":
30:                                         return new BlattAnzahlSpanne(Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)) + 1, Integer.MAX_VALUE);
31:                                 case "<=":
32:                                         return new BlattAnzahlSpanne(0, Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)) + 1);
33:                                 case ">=":
34:                                         return new BlattAnzahlSpanne(Integer.parseInt(vergleichsoperatorMitZahlMatcher.group(2)), Integer.MAX_VALUE);
35:                                 default:
36:                                         break;
37:                         }
38:                 } else if (zwischenZweiZahlenMatcher.find()) {
39:                         return new BlattAnzahlSpanne(Integer.parseInt(zwischenZweiZahlenMatcher.group(1)), Integer.parseInt(zwischenZweiZahlenMatcher.group(2)) + 1);
40:                 } else if (nurZahlMatcher.matches()) {
41:                         final int zahl = Integer.parseInt(nurZahlMatcher.group(1));
42:                         return new BlattAnzahlSpanne(zahl, zahl);
43:                 }
44:                 throw new IllegalArgumentException("Der Wert [ " + wert + " ] der Blattanzahl matcht auf keines der vorgegebenen Pattern.");
45:         }
46: }